<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 求 n的 阶乘 
        // 5! == 5* 4! ===  5*4*3!
        function jc(n){
            if(n===1){
                return 1;
            }
            return n*jc(n-1);
        }
        // jc(5)====> 5*jc(4) ===> 5* 4*jc(3) ===> 5* 4*3*jc(2) ====>5* 4*3*2*jc(1)====> 5* 4*3*2*1
        console.log(jc(5));


        // 求阶乘的和  
        // 比如  5 的阶乘和  是  5! + 4! + 3! + 2! + 1!

        function jch(n){
            var sum = 0;
            for(var i =1;i<=n;i++){
                // 每次累加 i 的阶乘
                sum = sum + jc(i);
            }
            return sum
        }
        console.log(jch(4)); // 1+ 2!+3! + 4!=  33


        // 能不能用递归解决? 阶乘和
        // jch(4) === > jch(3) + 4! ===> jch(2) + 3! +4! ===> jch(1) + 2! + 3! +4! ==> 1+ 2! + 3! +4!

        // jch(n) === > jch(n-1) + n!

        function jch2(n){
            if(n===1){
                return 1
            }
            return jch(n-1) + jc(n);
        }
        console.log(jch(4));


        // 总结 递归的关键 
        // 找准关系
        // 考虑跳出条件
    </script>
</body>
</html>